import Router from 'koa-router';
import {JoiUtil} from "../../utils/JoiUtil";
import Joi from 'joi'
import {SystemCtrl} from "../controller/SystemCtrl";

const router = new Router({prefix: '/system'});
/**
 * @api {post} /system/addProject 添加项目
 * @apiGroup 项目
 * @apiParam {String} name 项目名称
 * @apiParam {String} path 项目路径
 * @apiSuccess (200) {Object} data 数据
 */
router.post('/addProject', JoiUtil.middlewareByObject({
    name: Joi.string().required(),
    path: Joi.string().required(),
}), SystemCtrl.addProject);
/**
 * @api {get} /system/deleteProject 删除项目
 * @apiGroup 项目
 * @apiParam {String} id 项目id
 * @apiSuccess (200) {Object} data 数据
 */
router.get('/deleteProject', JoiUtil.middlewareByObject({
    id: Joi.string().required(),
}), SystemCtrl.deleteProject);
/**
 * @api {post} /system/updateProject 更新项目
 * @apiGroup 项目
 * @apiParam {String} id 项目id
 * @apiParam {String} name 项目名称
 * @apiParam {String} path 路径
 * @apiSuccess (200) {Object} data 数据
 */
router.post('/updateProject', JoiUtil.middlewareByObject({
    id: Joi.string().required(),
    path: Joi.string().empty(""),
    name: Joi.string().empty(""),
}), SystemCtrl.updateProject);
/**
 * @api {get} /system/getAllProject 获取所有项目
 * @apiGroup 项目
 * @apiParam {Number} [page=0] 页数
 * @apiParam {Number} [limit=10] 每页返回个数
 * @apiSuccess (200) {Object} data 数据
 * @apiSuccess (200) {String} data.count 数据总个数
 */
router.get('/getAllProject', SystemCtrl.getAllProject);
/**
 * @api {post} /system/addRouter 添加路由
 * @apiGroup 系统操作类
 * @apiParam {String} projectId 项目id
 * @apiParam {String} path 路径
 * @apiParam {String} handler 执行的函数字符串  包含ctx,next
 * @apiParam {String} [method=get] 请求方式
 * @apiSuccess (200) {Object} data 数据
 */
router.post('/addRouter', JoiUtil.middlewareByObject({
    projectId: Joi.string().required(),
    path: Joi.string().required(),
    handler: Joi.string().required(),
    method: Joi.string(),
}), SystemCtrl.addRouter);
/**
 * @api {get} /system/removeRouter 移除路由
 * @apiGroup 系统操作类
 * @apiParam {String} id 路由id
 * @apiSuccess (200) {Object} data 数据
 */
router.get('/removeRouter', JoiUtil.middlewareByObject({
    id: Joi.string().required(),
}), SystemCtrl.removeRouter);

/**
 * @api {post} /system/updateRouter 更新路由
 * @apiGroup 系统操作类
 * @apiParam {String} id 路由id
 * @apiParam {String} path 路径
 * @apiParam {String} handler 执行的函数字符串  包含ctx,next
 * @apiParam {String} [method=get] 请求方式
 * @apiSuccess (200) {Object} data 数据
 */
router.post('/updateRouter', JoiUtil.middlewareByObject({
    id: Joi.string().required(),
    path: Joi.string().required(),
    handler: Joi.string().required(),
    method: Joi.string(),
}), SystemCtrl.updateRouter);

/**
 * @api {get} /system/getAllRouter 获取所有路由
 * @apiGroup 系统操作类
 * @apiParam {Number} [page=0] 页数
 * @apiParam {Number} [limit=10] 每页返回个数
 * @apiSuccess (200) {Object} data 数据
 * @apiSuccess (200) {String} data.count 数据总个数
 */
router.get('/getAllRouter', SystemCtrl.getAllRouter);

/**
 * @api {get} /system/getAllRouterByProject 获取项目的所有路由
 * @apiGroup 系统操作类
 * @apiParam {String} id 项目id
 * @apiParam {Number} [page=0] 页数
 * @apiParam {Number} [limit=10] 每页返回个数
 * @apiSuccess (200) {Object} data 数据
 * @apiSuccess (200) {String} data.count 数据总个数
 */
router.get('/getAllRouterByProject', JoiUtil.middlewareByObject({
    id: Joi.string().required(),
}), SystemCtrl.getAllRouterByProject);
export default router;
